/**
 * 
 */
package com.cplsystems.incidencias.vm.personal.utils;

import java.util.List;

import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.bind.annotation.ExecutionArgParam;
import org.zkoss.bind.annotation.Init;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.select.Selectors;
import org.zkoss.zk.ui.select.annotation.VariableResolver;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Window;

import com.cplsystems.incidencias.business.DependenciasEconomicas;

/**
 * @author César Palalía López (csr.plz@aisa-automation.com)
 * 
 */
@VariableResolver(org.zkoss.zkplus.spring.DelegatingVariableResolver.class)
public class DependientesEconomicosVM {

	@Wire("#dependientesEconomicos")
	private Window dependientesEconomicos;
	private List<DependenciasEconomicas> dependenciasEconomicas;
	private DependenciasEconomicas nuevaDependenciaEconomica = new DependenciasEconomicas();
	private DependenciasEconomicas dependenciaEconomicaSeleccionada = new DependenciasEconomicas();

	@Init
	public void init(
			@ContextParam(ContextType.VIEW) Component view,
			@ExecutionArgParam("dependenciasEconomicas") List<DependenciasEconomicas> dependenciasEconomicas) {
		Selectors.wireComponents(view, this, false);
		this.dependenciasEconomicas = dependenciasEconomicas;
	}

	@Command
	@NotifyChange({ "nuevaDependenciaEconomica", "dependenciasEconomicas" })
	public void guardarDependenciaEconomica() {
		if (!dependenciasEconomicas.contains(nuevaDependenciaEconomica)) {
			dependenciasEconomicas.add(nuevaDependenciaEconomica);
		}
		nuevaDependenciaEconomica = new DependenciasEconomicas();
	}

	@Command
	@NotifyChange({ "nuevaDependenciaEconomica", "dependenciasEconomicas" })
	public void eliminarDependenciaEconomica() {
		if (dependenciaEconomicaSeleccionada != null) {
			if (dependenciasEconomicas
					.contains(dependenciaEconomicaSeleccionada)) {
				dependenciasEconomicas.remove(dependenciaEconomicaSeleccionada);
				nuevaDependenciaEconomica = new DependenciasEconomicas();
			}
		}
	}

	@Command
	@NotifyChange({ "nuevaDependenciaEconomica", "dependenciasEconomicas" })
	public void prepareElementForEdition(
			@BindingParam("dependiente") DependenciasEconomicas dependiente) {
		if (dependiente != null) {
			nuevaDependenciaEconomica = dependiente;
		}
	}

	@Command
	public void closeDialog() {
		dependientesEconomicos.detach();
	}

	public List<DependenciasEconomicas> getDependenciasEconomicas() {
		return dependenciasEconomicas;
	}

	public void setDependenciasEconomicas(
			List<DependenciasEconomicas> dependenciasEconomicas) {
		this.dependenciasEconomicas = dependenciasEconomicas;
	}

	public DependenciasEconomicas getNuevaDependenciaEconomica() {
		return nuevaDependenciaEconomica;
	}

	public void setNuevaDependenciaEconomica(
			DependenciasEconomicas nuevaDependenciaEconomica) {
		this.nuevaDependenciaEconomica = nuevaDependenciaEconomica;
	}

	public DependenciasEconomicas getDependenciaEconomicaSeleccionada() {
		return dependenciaEconomicaSeleccionada;
	}

	public void setDependenciaEconomicaSeleccionada(
			DependenciasEconomicas dependenciaEconomicaSeleccionada) {
		this.dependenciaEconomicaSeleccionada = dependenciaEconomicaSeleccionada;
	}

}
